package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户信息对象 users
 * 
 * @author hello
 * @date 2025-10-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Users extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 用户ID（主键） */
    private Long userid;

    /** 用户手机号（唯一） */
    @Excel(name = "用户手机号", readConverterExp = "唯=一")
    private String userPhone;

    /** 用户邮箱（唯一） */
    @Excel(name = "用户邮箱", readConverterExp = "唯=一")
    private String userEmail;

    /** 用户编码/验证码 */
    @Excel(name = "用户编码/验证码")
    private Long userCode;

    /** 用户名 */
    @Excel(name = "用户名")
    private String username;

    /** 用户头像URL */
    @Excel(name = "用户头像URL")
    private String userAvatarUrl;

    /** 用户扩展数据（JSON格式） */
    @Excel(name = "用户扩展数据", readConverterExp = "J=SON格式")
    private String userData;

    /** 用户年龄 */
    @Excel(name = "用户年龄")
    private Long userAge;

    /** 用户性别 */
    @Excel(name = "用户性别")
    private String userGender;

    /** 用户个性签名 */
    @Excel(name = "用户个性签名")
    private String userSignature;

    /** 用户标签（JSON数组） */
    @Excel(name = "用户标签", readConverterExp = "J=SON数组")
    private String userTags;

    /** 获赞数量 */
    @Excel(name = "获赞数量")
    private Long userLikes;

    /** 粉丝数量 */
    @Excel(name = "粉丝数量")
    private Long userFollowers;

    /** 用户积分 */
    @Excel(name = "用户积分")
    private Long userPoints;

    /** 用户兴趣爱好（JSON数组） */
    @Excel(name = "用户兴趣爱好", readConverterExp = "J=SON数组")
    private String userHobbies;

    /** 用户所在城市 */
    @Excel(name = "用户所在城市")
    private String userCity;

    /** 用户相册图片URL列表（JSON数组） */
    @Excel(name = "用户相册图片URL列表", readConverterExp = "J=SON数组")
    private String userImgUrls;

    /** 用户常去地点 */
    @Excel(name = "用户常去地点")
    private String userFrequentPlaces;

    /** 用户生日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "用户生日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date userBirthday;

    /** 用户等级 */
    @Excel(name = "用户等级")
    private Integer userLevel;

    /** 用户状态：开启-正常，关闭-禁用，删除-已删除 */
    @Excel(name = "用户状态：开启-正常，关闭-禁用，删除-已删除")
    private String status;

    /** 额外扩展数据（JSON格式） */
    @Excel(name = "额外扩展数据", readConverterExp = "J=SON格式")
    private String extraData;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastLogin;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setUserid(Long userid) 
    {
        this.userid = userid;
    }

    public Long getUserid() 
    {
        return userid;
    }
    public void setUserPhone(String userPhone) 
    {
        this.userPhone = userPhone;
    }

    public String getUserPhone() 
    {
        return userPhone;
    }
    public void setUserEmail(String userEmail) 
    {
        this.userEmail = userEmail;
    }

    public String getUserEmail() 
    {
        return userEmail;
    }
    public void setUserCode(Long userCode) 
    {
        this.userCode = userCode;
    }

    public Long getUserCode() 
    {
        return userCode;
    }
    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getUsername() 
    {
        return username;
    }
    public void setUserAvatarUrl(String userAvatarUrl) 
    {
        this.userAvatarUrl = userAvatarUrl;
    }

    public String getUserAvatarUrl() 
    {
        return userAvatarUrl;
    }
    public void setUserData(String userData) 
    {
        this.userData = userData;
    }

    public String getUserData() 
    {
        return userData;
    }
    public void setUserAge(Long userAge) 
    {
        this.userAge = userAge;
    }

    public Long getUserAge() 
    {
        return userAge;
    }
    public void setUserGender(String userGender) 
    {
        this.userGender = userGender;
    }

    public String getUserGender() 
    {
        return userGender;
    }
    public void setUserSignature(String userSignature) 
    {
        this.userSignature = userSignature;
    }

    public String getUserSignature() 
    {
        return userSignature;
    }
    public void setUserTags(String userTags) 
    {
        this.userTags = userTags;
    }

    public String getUserTags() 
    {
        return userTags;
    }
    public void setUserLikes(Long userLikes) 
    {
        this.userLikes = userLikes;
    }

    public Long getUserLikes() 
    {
        return userLikes;
    }
    public void setUserFollowers(Long userFollowers) 
    {
        this.userFollowers = userFollowers;
    }

    public Long getUserFollowers() 
    {
        return userFollowers;
    }
    public void setUserPoints(Long userPoints) 
    {
        this.userPoints = userPoints;
    }

    public Long getUserPoints() 
    {
        return userPoints;
    }
    public void setUserHobbies(String userHobbies) 
    {
        this.userHobbies = userHobbies;
    }

    public String getUserHobbies() 
    {
        return userHobbies;
    }
    public void setUserCity(String userCity) 
    {
        this.userCity = userCity;
    }

    public String getUserCity() 
    {
        return userCity;
    }
    public void setUserImgUrls(String userImgUrls) 
    {
        this.userImgUrls = userImgUrls;
    }

    public String getUserImgUrls() 
    {
        return userImgUrls;
    }
    public void setUserFrequentPlaces(String userFrequentPlaces) 
    {
        this.userFrequentPlaces = userFrequentPlaces;
    }

    public String getUserFrequentPlaces() 
    {
        return userFrequentPlaces;
    }
    public void setUserBirthday(Date userBirthday) 
    {
        this.userBirthday = userBirthday;
    }

    public Date getUserBirthday() 
    {
        return userBirthday;
    }
    public void setUserLevel(Integer userLevel) 
    {
        this.userLevel = userLevel;
    }

    public Integer getUserLevel() 
    {
        return userLevel;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setExtraData(String extraData) 
    {
        this.extraData = extraData;
    }

    public String getExtraData() 
    {
        return extraData;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setLastLogin(Date lastLogin) 
    {
        this.lastLogin = lastLogin;
    }

    public Date getLastLogin() 
    {
        return lastLogin;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("userid", getUserid())
            .append("userPhone", getUserPhone())
            .append("userEmail", getUserEmail())
            .append("userCode", getUserCode())
            .append("username", getUsername())
            .append("userAvatarUrl", getUserAvatarUrl())
            .append("userData", getUserData())
            .append("userAge", getUserAge())
            .append("userGender", getUserGender())
            .append("userSignature", getUserSignature())
            .append("userTags", getUserTags())
            .append("userLikes", getUserLikes())
            .append("userFollowers", getUserFollowers())
            .append("userPoints", getUserPoints())
            .append("userHobbies", getUserHobbies())
            .append("userCity", getUserCity())
            .append("userImgUrls", getUserImgUrls())
            .append("userFrequentPlaces", getUserFrequentPlaces())
            .append("userBirthday", getUserBirthday())
            .append("userLevel", getUserLevel())
            .append("status", getStatus())
            .append("extraData", getExtraData())
            .append("createdAt", getCreatedAt())
            .append("lastLogin", getLastLogin())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
